package com.elitel.frame.base.service;

import com.elitel.frame.main.entity.CfgField;
import com.elitel.frame.main.entity.CfgFieldCustomFilter;
import com.elitel.frame.main.entity.vo.ZTreeDataModelVo;

import java.util.List;

/**
 * @Description 数据库表字段配置服务接口
 * @author gyf
 */
public interface CfgFieldService {
	
	/**
     * @Description 通过表标识查询所有配置字段信息
     * @param 表标识
     * @return 字段配置表集合
     * @author gyf
     */
	List<CfgField> getAllField(String dtConfigId);
	
	/**
     * @Description 批量新增字段信息
     * @param 字段字符串以(|)分割fieldname-fieldnamech|fieldname-fieldnamech
     * @author gyf
     */
	void batchAddFields(String dtConfigId,String strFields,String action,boolean isImport);


	void addFieldList(List<CfgField> cfgFieldList) ;


	/**
	 * 
	 * @Title: selectFieldByConfig 
	 * @Description: TODO(根据标识查询字段) 
	 * @author Fanwenquan
	 * @return List<CfgField>
	 * @throws
	 */
	public List<CfgField> selectFieldByConfig(String dtConfigId);
	
	/**
	 * 
     * @Description 批量删除字段信息
     * @param guid集合
     * @return
     * @author gyf
     */
	void deleteBatchByGuid(List<String> guids);
	
	/**
	 * 
     * @Description 修改字段信息
     * @param guid集合
     * @return
     * @author gyf
     */
	int updateFieldInfo(CfgField cfgField);

	int updateFieldInfoList(List<CfgField> cfgFieldList);

	
	/**
     * @Desciption 通过表标识查询在其他配置表中不存在的字段信息
     * @param dtconfigid(表标识)
     * @return List<CfgField>集合
     * @author guoyanfei
     */
	List<CfgField> selectFieldNotInFieldConfig(String dtconfig);
	
	/**
     * @Desciption 通过表标识查询在该表及其关联表的所有字段信息
     * @param dtconfigid(表标识)
     * @return List<CfgField>集合
     * @author guoyanfei
     */
	List<ZTreeDataModelVo> selectFieldToJoinTable(String dtconfig);
	
	/**
     * @Desciption 通过字段id查询字段信息
     * @param guid(字段id)
     * @return CfgField实体
     * @author guoyanfei
     */
	CfgField selectFieldByguid(String guid);

	void batchInsertCfgField(List<CfgField> cfgFieldList);

    void saveCustomFilterField(List<CfgFieldCustomFilter> cfgFields, String dtConfigId);

	List<CfgFieldCustomFilter> getCustomFilterField(String dtConfigId);
}
